package org.jeecg.modules.degression.controller;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.degression.pojo.MlccPriceSystemFactoryRecord;
import org.jeecg.modules.degression.pojo.MlccPricesystemFactoryCategory;
import org.jeecg.modules.degression.service.IFactoryDegressService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * 供应商成本
 *
 * @author pc
 * @since 20201203
 */
@RestController
@RequestMapping("/FactoryDegressionController")
public class FactoryDegressionController {

    @Autowired
    IFactoryDegressService service;

    /**
     * 供应商新增成本项（列表添加数据）
     *
     * @param category 品类ID
     */
    @RequestMapping("/saveDegress")
    public JSONObject saveDegress(String category, String userid) {
        JSONObject jsonObject = new JSONObject();
        try {
            int i = service.saveDegress(category, userid);
            if (i > 0) {
                jsonObject.put("code", 0);
                jsonObject.put("msg", "添加成功");
            } else if (i == -1) {
                jsonObject.put("code", 1);
                jsonObject.put("msg", "成本项已存在");
            } else {
                jsonObject.put("code", 1);
                jsonObject.put("msg", "操作失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
            jsonObject.put("code", 1);
            jsonObject.put("msg", "发生异常");
        }
        return jsonObject;
    }

    /**
     * 工厂的成本项查询
     *
     * @param pageNo       当前页
     * @param pageSize     页面大小
     * @param category     类别
     * @param businessType 业务类型
     */
    @RequestMapping("/listPrice2")
    public Result<?> listPrice(@RequestParam(name = "pageNo", defaultValue = "1") int pageNo,
                               @RequestParam(name = "pageSize", defaultValue = "10") int pageSize,
                               Integer category, Integer businessType, String userid) {
        Page<MlccPricesystemFactoryCategory> page = new Page<>(pageNo, pageSize);
        try {
            IPage<MlccPricesystemFactoryCategory> iPage = service.listPrice(page, category, businessType, userid);
            return Result.ok(iPage);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error("发生异常");
        }
    }

    /**
     * 删除不需要的成本项
     *
     * @param id
     */
    @RequestMapping("/delPriceC")
    public Result<?> delPriceC(String id) {
        try {
            int result = service.delPriceC(id);
            if (result > 0) {
                return Result.ok("操作成功");
            } else {
                return Result.error("操作失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error("操作失败");
        }
    }

    /**
     * 保存系统加急成本项(公用)
     *
     * @param costID       关联的参数的数据ID，如绣字的ID，绣字高度的id
     * @param typeID       类型：0定制项，1定制项下的参数，2绣字工艺，3撞色，4绣字部位，5绣字高度，6返修参数，7加急项
     * @param systemID     上级主键ID
     * @param systemCateID 成本管理的类别ID
     * @param categoryName 加急项名称
     * @param price        价格
     */
    @RequestMapping("/saveurgent")
    public JSONObject saveurgent(String costID, Integer typeID, String systemID, String systemCateID,
                                 String categoryName, String price, String costCode) {
        JSONObject jsonObject = new JSONObject();
        try {
            int result = service.saveurgent(costID, typeID, systemID, systemCateID, categoryName, price, costCode);
            if (result < 1) {
                jsonObject.put("code", 1);
                jsonObject.put("msg", "添加失败");
            }
            if (result > 0) {
                jsonObject.put("code", 0);
                jsonObject.put("msg", "添加成功");
            }
        } catch (Exception e) {
//            e.printStackTrace();
            jsonObject.put("code", 1);
            jsonObject.put("msg", "系统异常");
        }
        return jsonObject;
    }

    /**
     * 获取保存的成本项
     *
     * @param pageNo   当前页
     * @param pageSize 页面大小
     * @param systemID 上级ID
     * @param typeID   标签页ID
     */
    @RequestMapping("/listChengben")
    public Result<?> listChengben(@RequestParam(name = "pageNo", defaultValue = "1") int pageNo,
                                  @RequestParam(name = "pageSize", defaultValue = "10") int pageSize, String systemID, String typeID) {
        Page<MlccPriceSystemFactoryRecord> page = new Page<>(pageNo, pageSize);
        try {
            IPage<MlccPriceSystemFactoryRecord> iPage = service.listChengben(page, systemID, typeID);
            return Result.ok(iPage);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error("查询失败");
        }
    }

    /**
     * 更新成本价
     *
     * @param id    成本数据ID
     * @param price 价格
     */
    @RequestMapping("/updatePrice")
    public JSONObject updatePrice(String id, String price) {
        JSONObject jsonObject = new JSONObject();
        try {
            int result = service.updatePrice(id, price);
            if (result < 1) {
                jsonObject.put("code", 1);
                jsonObject.put("msg", "添加失败");
            }
            if (result > 0) {
                jsonObject.put("code", 0);
                jsonObject.put("msg", "添加成功");
            }
        } catch (Exception e) {
            e.printStackTrace();
            jsonObject.put("code", 1);
            jsonObject.put("msg", "系统异常");
        }
        return jsonObject;
    }

    /**
     * 保存定制成本项
     *
     * @param systemID     上级主键ID
     * @param systemCateID 成本管理的类别ID
     * @param categoryID   类别ID
     * @param categoryName 类别名称
     * @param price        价格
     * @param costCode     参数编号
     */
    @RequestMapping("/savePrice")
    public JSONObject savePrice(String systemID, String systemCateID, String categoryID, String categoryName, String price, String costCode) {
        JSONObject jsonObject = new JSONObject();
        try {
            int result = service.savePricesavePrice(systemID, systemCateID, categoryID, categoryName, price, costCode);
            if (result < 1) {
                jsonObject.put("code", 1);
                jsonObject.put("msg", "添加失败");
            }
            if (result > 0) {
                jsonObject.put("code", 0);
                jsonObject.put("msg", "添加成功");
            }
        } catch (Exception e) {
            e.printStackTrace();
            jsonObject.put("code", 1);
            jsonObject.put("msg", "系统异常");
        }
        return jsonObject;
    }

    /**
     * 删除成本项
     *
     * @param id 成本项id
     */
    @RequestMapping("/delChengben")
    public Result<?> delChengben(String id) {
        try {
            int result = service.delChengben(id);
            if (result > 0) {
                return Result.ok("操作成功");
            } else {
                return Result.error("操作失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error("操作失败");
        }
    }
}
